package com.zdp.leetcode;

public class 速算机器人 {

    //结果返回 x+y ==> 字符串中出现一次A x+y = (2*x+y)+y = 2x+2y 出现一次B x+y = x+(2*y+x) = 2x+2y
    //所以 字符串无论出现AB 结果都是一样的  (x+y)^s.length();
    public int calculate(String s) {
        return (int) Math.pow(2,s.length());
        //return 1<<s.length();
    }
    public int calculate2(String s) {
        int x = 1;
        int y = 0;
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)=='A'){
                x = 2*x+y;
            }else{
                y = 2*y+x;
            }
        }
        return x+y;
    }
}
/*
* 题目描述：
* 小扣在秋日市集发现了一款速算机器人。店家对机器人说出两个数字（记作 x 和 y），请小扣说出计算指令：

"A" 运算：使 x = 2 * x + y；
"B" 运算：使 y = 2 * y + x。
在本次游戏中，店家说出的数字为 x = 1 和 y = 0，小扣说出的计算指令记作仅由大写字母 A、B 组成的字符串 s，字符串中字符的顺序表示计算顺序，请返回最终 x 与 y 的和为多少。

示例 1：

输入：s = "AB"

输出：4

解释：
经过一次 A 运算后，x = 2, y = 0。
再经过一次 B 运算，x = 2, y = 2。
最终 x 与 y 之和为 4。

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/nGK0Fy
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*
* */
